package edu.mercer.sse.error;

import edu.mercer.sse.annotations.Fulfills;

/**
 * Checked Exception.<p>
 * 
 * Demonstration of Wrapper Facade.
 * 
 * Exception used as a translation of return codes from wrapped command-line 
 * 	utility.<p>
 * 
 * Return codes out of range as defined in configuration.<p>
 * 
 * @see UtilityWrapping
 * 
 * @see Configuration
 */

public class ReturnCodeException extends Exception

	implements VisitableErrorLogging<String, ErrorLoggingVisitor>

{
	private static final long serialVersionUID = 5775543603149913825L;

    /**
     * Create new custom unchecked exception: CriticalException.<p>
     */
            
    public ReturnCodeException()
    {
    	super();
            
    }//constructor


    /**
     * Create new custom unchecked exception: CriticalException.<p>
     * 
     * @param messageIn - String descriptive message to include when creating
     *      this unchecked exception
     */

    public ReturnCodeException( final String messageIn )
    {
    	super( messageIn );

    }//constructor


    /**
     * Create new custom unchecked exception: CriticalException.<p>
     * 
     * @param exceptionIn - Exception, checked to be wrapped in this 
     *      unchecked exception
     */

    public ReturnCodeException( final Exception exceptionIn )
    {
    	super( exceptionIn );

    }//constructor


    /**
     * Create new custom unchecked exception: CriticalException.<p>
     * 
     * @param throwableIn - Throwable to be wrapped in this unchecked 
     *      exception
     */

    public ReturnCodeException( final Throwable throwableIn )
    {
    	super( throwableIn );

    }//constructor	


    @Fulfills("VisitableErrorLogging")
    public String accept( final ErrorLoggingVisitor visitor ) 
    {
    	return visitor.visit( this );

    }//method    


}//class
